iT邦幫忙

2023 iThome 鐵人賽

DAY 5
0
Security

資訊安全之加密理論大雜燴系列 第 5

Day5 串流加密法

  • 分享至 

  • xImage
  •  

一次性密碼本的問題

既然一次性密碼本是安全的,為什麼實務上不太使用呢?
很明顯的,一次性密碼本最大問題就是要如何讓接收者也知道每次隨機生成的密鑰K
你可能會想:那我們就讓K在生成的同時也順便傳送到接收者手上就好了
但是反過來,既然我們有這個技術可以安全地將K傳到接收者手上,那為什麼不用這個技術直接將明文P傳送過去呢?

因此,為了增加他的實用性,我們必須放棄一點點安全性,如此便有了串流加密法的概念

串流加密法

串流加密是將隨機生成的密鑰K送進某個特殊的函數中,生成S,稱為 串流密鑰(keystream)

欲進行加密,Alice即可將這組串流密鑰S與明文P進行XOR的動作,形成密文C

假如事先和Bob約定好演算法以及密鑰K,Bob就可以自己生成串流密鑰S,再將密文XOR一次,還原回明文P


雙方將固定的密鑰K送進特殊的函數中產生串流密鑰S,此S才是真正扮演加密的角色,密鑰K只是負責產生S而已

如以下範例

密鑰 串流密鑰(16進位) 明文 密文(16進位)
Key EB9F7781B734CA72A719… Plaintext BBF316E8D940AF0AD3

密鑰KEY負責生成一個相當複雜的串流密鑰,該串流密鑰與明文XOR後得到密文

就好像前幾天的python程式碼中生成隨機數字的seed一樣,固定K可以生成出看似隨機的S出來,讓串流密鑰的生成彷彿隨機生成的密鑰

著名的串流加密法有A5/1, RC4 他們分別對應不同設計精巧的特殊函數,各自合適的應用情境也有所不同

安全性

會說串流加密不安全是因為,一但密鑰K重複使用兩次,將會使明文相當容易破解

例如明文A, B使用相同的串流密鑰C做XOR,得到E(A), E(B)
若兩則訊息都被攔下,可以輕鬆得到
E(A) XOR E(B) = A XOR C XOR B XOR C = A XOR B

A XOR B一但知道,就可以仰賴他們是自然語言的性質,計算頻率來破解

好在這些知名的演算法中都有加入聰明的防護機制能更換密鑰K,讓整個解密的過程沒那麼容易


上一篇
Day 4 安全的一次性密碼本
下一篇
Day 6 分組加密法&費斯妥密碼
系列文
資訊安全之加密理論大雜燴30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言